home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / favloc-1.2-fx+tb.xpi / chrome / favloc.jar / content / favlocContext.js < prev    next >
Text File  |  2008-06-18  |  6KB  |  176 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is FavLoc
  15.  *
  16.  * The Initial Developer of the Original Code is Justin Scott.
  17.  * Portions created by the Initial Developer are Copyright (C) 2006
  18.  * the Initial Developer. All Rights Reserved.
  19.  *
  20.  * Contributor(s): (none)
  21.  *
  22.  * Alternatively, the contents of this file may be used under the terms of
  23.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  24.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  25.  * in which case the provisions of the GPL or the LGPL are applicable instead
  26.  * of those above. If you wish to allow use of your version of this file only
  27.  * under the terms of either the GPL or the LGPL, and not to allow others to
  28.  * use your version of this file under the terms of the MPL, indicate your
  29.  * decision by deleting the provisions above and replace them with the notice
  30.  * and other provisions required by the GPL or the LGPL. If you do not delete
  31.  * the provisions above, a recipient may use your version of this file under
  32.  * the terms of any one of the MPL, the GPL or the LGPL.
  33.  *
  34.  * ***** END LICENSE BLOCK ***** */
  35. var FavLoc;
  36.  
  37. var FavLocContext = {
  38.     //Populate image context submenu from saved preferences
  39.     init: function(type) {
  40.         FavLoc = Components.classes['@fligtar.com/favloc;1'].getService().wrappedJSObject;
  41.         
  42.         var menu = document.getElementById('context-favloc-' + type);
  43.         var popup = document.getElementById('context-favloc-popup-' + type);
  44.         
  45.         if(!FavLoc.settings['show-context-' + type]) {
  46.                 menu.hidden = true;
  47.                 return false;
  48.         }
  49.         else
  50.             menu.hidden = false;            
  51.         
  52.         while(popup.hasChildNodes()) {
  53.             popup.removeChild(popup.firstChild);
  54.         }
  55.         
  56.         if(FavLoc.favorites.length > 0 && (FavLoc.names[0] != "" && FavLoc.favorites[0] != "")) {
  57.             for(var i = 0; i < FavLoc.favorites.length; i++) {
  58.                 if(FavLoc.favorites[i] != "" && FavLoc.names[i] != "") {
  59.                     var menuitem = document.createElement('menuitem');
  60.                     menuitem.setAttribute('label', FavLoc.names[i]);
  61.                     menuitem.setAttribute('value', FavLoc.favorites[i]);
  62.                     menuitem.addEventListener("command", function(e) { new FavLocContext.download(type, this.value); }, false);
  63.                     popup.appendChild(menuitem);
  64.                 }
  65.             }
  66.         }
  67.         else {
  68.             var menuitem = document.createElement('menuitem');
  69.             menuitem.setAttribute('label', "(" + FavLoc.bundle.GetStringFromName("favloc.noneset") + ")");
  70.             menuitem.setAttribute('disabled', true);
  71.             popup.appendChild(menuitem);
  72.         }
  73.         
  74.         if (type.indexOf('attachment') == -1) {
  75.             document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function(e) { new FavLocContext.checkContext(); }, false);
  76.         }
  77.         
  78.         return true;
  79.     },
  80.     
  81.     //Checks to see if the FavLoc menu should be displayed
  82.     checkContext: function() {
  83.         if(gContextMenu != null) {
  84.             if(FavLoc.settings['show-context-image'] == true)
  85.                 gContextMenu.showItem("context-favloc-image", gContextMenu.onImage);
  86.             if(FavLoc.settings['show-context-link'] == true)
  87.                 gContextMenu.showItem("context-favloc-link", gContextMenu.onLink);      
  88.         }
  89.     },
  90.     
  91.     //Download file
  92.     download: function(type, location) {
  93.         var url;
  94.         
  95.         if(type == 'image')
  96.             url = gContextMenu.imageURL;
  97.         else if (type.indexOf('attachment') != -1) {        
  98.             if (type == 'attachment') {
  99.                 var selectedAttachments = document.getElementById('attachmentList').selectedItems;
  100.                 for (var a = 0; a < selectedAttachments.length; a++) {
  101.                     FavLocContext.downloadAttachment(selectedAttachments[a].attachment, location);
  102.                 }
  103.             }
  104.             else {
  105.                 for (index in currentAttachments) {
  106.                     FavLocContext.downloadAttachment(currentAttachments[index], location);
  107.                 }
  108.             }
  109.             
  110.             return true;
  111.         }
  112.         else if (type == 'link')
  113.             url = gContextMenu.linkURL;
  114.         
  115.         var browser = FavLoc.getBrowserWindow();
  116.         
  117.         var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  118.         dir.initWithPath(location);
  119.         
  120.         //Check directory existance
  121.         if(dir.exists()) {
  122.             var filename = browser.getDefaultFileName(null, browser.makeURI(url), null, null);
  123.             dir.append(filename);
  124.             
  125.             //Check file existance
  126.             if(dir.exists()) {
  127.                 var newDir = FavLoc.handleOverwrite(filename, location, FavLoc.overwrite, window);
  128.                 if (newDir != false) {
  129.                     dir = newDir;
  130.                 }
  131.             }
  132.             
  133.             var chosenData = new browser.AutoChosen(dir, browser.makeURI(url));
  134.             
  135.             if (gContextMenu.onLink) {
  136.                 browser.internalSave(url, null, "", null, null, null, null, chosenData, null, true);
  137.             }
  138.             else if(gContextMenu.onImage) {
  139.                  browser.saveImageURL(url, null, null, null, true, null, chosenData);
  140.             }
  141.         } else {
  142.             alert(FavLoc.bundle.GetStringFromName("favloc.nolongerexists"));
  143.         }
  144.         
  145.         return true;
  146.     },
  147.     
  148.     //Download attachment
  149.     downloadAttachment: function(attachment, location) {
  150.         var browser = FavLoc.getBrowserWindow();
  151.         
  152.         var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  153.         dir.initWithPath(location);
  154.         
  155.         //Check directory existance
  156.         if(dir.exists()) {
  157.             dir.append(attachment.displayName);
  158.             
  159.             //Check file existance
  160.             if(dir.exists()) {
  161.                 var newDir = FavLoc.handleOverwrite(attachment.displayName, location, FavLoc.overwrite, window);
  162.                 if (newDir != false) {
  163.                     dir = newDir;
  164.                 }
  165.             }
  166.             
  167.             var chosenData = new browser.AutoChosen(dir, browser.makeURI(attachment.url));
  168.             
  169.             browser.internalSave(attachment.url, null, "", null, null, null, null, chosenData, null, true);
  170.  
  171.         } else {
  172.             alert(FavLoc.bundle.GetStringFromName("favloc.nolongerexists"));
  173.         }
  174.     }
  175.     
  176. };